1
Di Luar Kertas
AI008Lecture 2
00:07

Menghubungkan kesenjangan antara membaca karya akademik secara pasif dan mencapai penguasaan teknik sejati membutuhkan pemahaman mendalam terhadap bagian matematis inti dari Transformer. Transisi dari pemahaman teoretis ke implementasi adalah satu-satunya cara untuk mengungkap misteri 'kerapatan yang melekat' dalam ruang laten berdimensi tinggi.

1. Alasan Matematis untuk Pengskalaan

Mekanisme utama dari LLM modern adalah Perhatian Produk Titik yang Dikalibrasi. Detail teknik penting yang sering diabaikan dalam teori adalah Aturan Pengskalaan:

  • Skor perhatian mentah harus dibagi dengan akar kuadrat ukuran dimensi kunci (dk).
  • Alasannya: Ini mencegah hasil kali titik menjadi terlalu besar, yang akan mendorong fungsi softmax ke daerah dengan gradien tak hingga kecil, secara efektif 'membunuh' kemampuan model untuk belajar selama proses backpropagation.

2. Dari Teori ke Operasi Tensor

Pemahaman teknik melibatkan perpindahan dari lingkaran konseptual ke perkalian matriks yang sangat paralel.

  • Injeksi Urutan: Berbeda dengan RNN, Transformer tidak memiliki rasa urutan secara bawaan. Insinyur harus menulis kode fungsi sinus dan cosinus secara manual (Enkoding Posisional) untuk menyisipkan data urutan.
  • Mekanisme Stabilitas: Implementasi membutuhkan penggunaan strategis Hubungan Residu dan Normalisasi Layer (LayerNorm) untuk mengatasi pergeseran kovarian internal dan memastikan proses pelatihan tetap stabil.
Wawasan Teknik
Penguasaan sejati ditemukan dalam implementasi "baris demi baris". Mengandalkan literatur akademik semata sering mengarah pada kesalahpahaman tentang stabilitas gradien dan efisiensi komputasi.
Implementasi Python (PyTorch)
1
import torch
2
import torch.nn as nn
3
import math
4
5
def scaled_dot_product_attention(query, key, value):
6
# Calculate d_k (dimension of keys)
7
d_k = query.size(-1)
8
9
# Calculate raw attention scores
10
# Transitioning from naive loops to matrix multiplication
11
scores = torch.matmul(query, key.transpose(-2, -1))
12
13
# Apply the Scaling Rule to prevent infinitesimal gradients
14
scaled_scores = scores / math.sqrt(d_k)
15
16
# Apply Softmax to get attention weights
17
attention_weights = torch.softmax(scaled_scores, dim=-1)
18
19
# Output is the weighted sum of values
20
return torch.matmul(attention_weights, value)